<?php
/**
 * User: LRZ
 * Date: 2020/1/11
 * Time: 16:28
 */

/**
 *  66.加一
 *
 *  标签：数组
 *
 *  给定一个由整数组成的非空数组所表示的非负整数，在该数的基础上加一。
 *  最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
 *  你可以假设除了整数 0 之外，这个整数不会以零开头。
 *
 *  示例 1:
 *      输入: [1,2,3]
 *      输出: [1,2,4]
 *      解释: 输入数组表示数字 123。
 *
 *  示例 2:
 *      输入: [4,3,2,1]
 *      输出: [4,3,2,2]
 *      解释: 输入数组表示数字 4321。
 *
 *  来源：力扣（LeetCode）
 *  链接：https://leetcode-cn.com/problems/plus-one
 *  著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

$start = microtime(true);

$digits = [9, 9, 9];
$res    = plusOne($digits);

$end = microtime(true);
print_r($res);
printf(' total run: %.2f s<br>' . 'memory usage: %.2f M<br> ', $end - $start, memory_get_usage() / 1024 / 1024);

function plusOne($digits)
{
    $len = count($digits);
    for ($i = $len - 1; $i >= 0; $i--) {
        if ($digits[$i] === 9) {
            $digits[$i] = 0;
            continue;
        }
        $digits[$i] += 1;
        break;
    }
    if ($digits[0] === 0) {
        $digits[0]    = 1;
        $digits[$len] = 0;
    }
    return $digits;
}